import java.util.HashMap;
import java.util.Map;

public class Solution4 {
    class Solution {
        public int longestConsecutive(int[] nums) {
            // key表示num，value表示num最远到达的连续右边界
            Map<Integer, Integer> map = new HashMap<>();
            // 初始化每个num的右边界为自己
            for (int num : nums) {
                map.put(num, num);
            }
            int ans = 0;
            for (int num : nums) {
                if (!map.containsKey(num - 1)) {
                    int right = map.get(num);
                    // 遍历得到最远的右边界
                    while (map.containsKey(right + 1)) {
                        right = map.get(right + 1);
                    }
                    // 更新右边界
                    map.put(num, right);
                    // 更新答案
                    ans = Math.max(ans, right - num + 1);
                }
            }
            return ans;
        }
    }
}
